home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-10-25 | 1.6 KB | 66 lines | [TEXT/CCL2] |
- (in-package :ccl)
- ;;;;;;;;;;
- ;;various patches that will eventually be standard
-
- (export '(href hset pref pset
- make-record-handle make-record-pointer
- ))
-
- ;;;;;;;;;;
-
- ;;;;;;;;;;
-
- (eval-when (:compile-toplevel :load-toplevel :execute)
-
- (defmacro href (pointer accessor)
- `(rref ,pointer ,accessor :storage :handle))
-
- (defmacro pref (pointer accessor)
- `(rref ,pointer ,accessor :storage :pointer))
-
- (defmacro hset (pointer accessor thing)
- `(rset ,pointer ,accessor ,thing :storage :handle))
-
- (defmacro pset (pointer accessor thing)
- `(rset ,pointer ,accessor ,thing :storage :pointer))
-
- )
-
- ;;;;;;;;;;
-
- (defmethod find-view-containing-point ((view null) h &optional v
- (direct-subviews-only nil))
- (let ((point (make-point h v)))
- (flet ((check-window (w)
- (when (view-contains-point-p w point)
- (return-from find-view-containing-point
- (if direct-subviews-only
- w
- (find-view-containing-point
- w
- (subtract-points point (view-position w))))))))
- (declare (dynamic-extent #'check-window))
- (map-windows #'check-window :include-windoids t)
- nil)))
-
- ;;;;;;;;;;
-
-
- (eval-when (:compile-toplevel :load-toplevel :execute)
- (require :rlet-nondestructive))
-
- #| fixes bug illustrated below
-
- (defrecord foo (f1 (array :integer 5)))
-
- ;macro expands correctly
- (rlet ((bar :foo
- (:f1 2) 99)))
-
- ;won't compile
- (defun baz ()
- (rlet ((bar :foo
- (:f1 2) 99)))
- nil)
-
- |#